package com.example.kotlindemo.coroutine

import kotlinx.coroutines.*
import java.lang.Runnable


class CoroutineSample {

    fun threadTest(){
        Thread({
            println(Thread.currentThread().name)
        }).start()
    }


    // 闭包的概念
    fun closeTest(){
        //1.1 创建一个Thread 的完整写法
        Thread(object :Runnable{
            override fun run() {

            }
        })
      //1.2 满足SAM(是Java 8 支持Lambda语法的一种方式)
        Thread({

        })

      //1.3 使用闭包 { } 就是一个闭包
        Thread{

        }


        val coroutineScope = CoroutineScope(context)
//        coroutineScope.launch(Dispatchers.IO) {
//            val image = getImage(imageId)
//            launch(Dispatchers.Main) {
//                avatarIv.setImageBitmap(image)
//            }
//        }
        coroutineScope.launch(Dispatchers.Main) {      // 👈 在 UI 线程开始
            val image = withContext(Dispatchers.IO) {  // 👈 切换到 IO 线程，并在执行完成后切回 UI 线程
                getImage(imageId)                      // 👈 将会运行在 IO 线程
            }
            avatarIv.setImageBitmap(image)             // 👈 回到 UI 线程更新 UI
        }


        //withContext 是一个 suspend 函数，
        // 它需要在协程或者是另一个 suspend 函数中调用。

    }


}